#ifndef CNPIPE_INTERFACES_H
#define CNPIPE_INTERFACES_H

#include "cnpipe_global.h"
#include "pipedisplayopenglwidget.h"

#include <QMainWindow>

namespace Ui {
class CNPIPE_interfaces;
}

/**
 * CNPIPE界面菜单管理器
 * @brief The CNPIPE_interfaces class
 */
class CNPIPE_interfaces_window : public QMainWindow
{
    Q_OBJECT

public:
    explicit CNPIPE_interfaces_window(QWidget *parent = nullptr);
    ~CNPIPE_interfaces_window();
    void setGlobalInterface(CNPIPE_global *p) {
        this->parentInterface = p;
        //设置绘图需要的场景
        p->setScene(openGL->getScene());
    }
    CNPIPE_global *getGlobalInterface() {
        return this->parentInterface;
    }
    virtual void addMenus();
    virtual void render();
public slots:
    /** 打开JSON格式的管道文件 */
    virtual void openJSONFile();
    /** 显示管线的插槽 */
    virtual void showPipeLine();
    /** 显示实体管道的插槽 */
    virtual void showRealPipe();
    virtual void showCube();
    virtual void showSphere();
private:
    /** CNPIPE菜单管理 */
    Ui::CNPIPE_interfaces * ui;
    /** CNPIPE全局类对象 */
    CNPIPE_global *parentInterface;
    /** 打开操作 */
    QAction *openAction;
    /** 导出操作 */
    QAction *exportAction;
    /** 恢复默认显示的操作 */
    QAction *RestoreOriginalDisplayAction;
    /** 显示管道结构的操作 */
    QAction *pipeLineDisplayAction;
    /** 显示管道实体的操作 */
    QAction *realPipeDisplayAction;
    /** 显示应力云图的操作 */
    QAction *elementaryStressDisplayAction;
    /** 显示工况位移的操作 */
    QAction *loadDisplacementDisplayAction;
    /** 显示立方体的操作 */
    QAction *showCubeAction;
    /** 显示球体的操作 */
    QAction *showSphereAction;
    /** 显示圆锥体 */
    QAction *showConeAction;
    /** 显示圆柱体 */
    QAction *showCylinderAction;
    /** 三维展示之窗口 */
    PipeDisplayOpenGLWidget *openGL;
};

#endif // CNPIPE_INTERFACES_H
